Skip to content

Enhance type classification and simplify numeric conversion functions#16

Merged
FrozenLemonTee merged 39 commits intomainfrom
feat-explicit-conversion
Mar 26, 2026
Merged

Enhance type classification and simplify numeric conversion functions#16
FrozenLemonTee merged 39 commits intomainfrom
feat-explicit-conversion

Conversation

@FrozenLemonTee
Copy link
Member

@FrozenLemonTee FrozenLemonTee commented Mar 25, 2026

PR changes:

Copilot AI review requested due to automatic review settings March 25, 2026 11:02
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new conversion submodule to centralize numeric/underlying casting helpers, expands type classification concepts (e.g., *_like), and updates exports/imports so downstream code can consume the new conversion APIs.

Changes:

  • Add mcpplibs.primitives.conversion (traits + underlying casting utilities) and export it from the umbrella mcpplibs.primitives module.
  • Refine type concepts by adding operand/“*_like” concepts to better accept primitives and/or underlying types.
  • Replace legacy numeric casting helpers with the new conversion utilities and add new unit tests for conversions.

Reviewed changes

Copilot reviewed 11 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/basic/test_underlying.cpp Removes legacy alias test; adds coverage for new meta::*_like concepts.
tests/basic/test_conversion.cpp Adds tests for numeric_risk and cast variants (checked/saturating/truncating/exact) including underlying bridging.
src/underlying/traits.cppm Adds underlying_operand concept (cvref-stripped underlying_type).
src/primitives.cppm Exports the new mcpplibs.primitives.conversion module.
src/primitive/traits.cppm Updates default policies resolution and adds meta::*_like concepts; removes legacy alias exports.
src/primitive/impl.cppm Switches underlying bridging to use conversion::saturating_cast.
src/policy/impl.cppm Removes legacy numeric narrowing/casting helpers; keeps to_error_payload in policy::details.
src/operations/operators.cppm Switches checked overflow detection and assignment casting to conversion APIs; adds mapping from conversion risks to policy error kinds.
src/conversion/underlying.cppm Implements numeric risk detection and cast operations for reps and underlying types.
src/conversion/traits.cppm Defines conversion risk kinds and cast_result alias.
src/conversion/conversion.cppm Aggregates and exports conversion submodules.
.gitignore Adds /.vscode ignore entry.

@FrozenLemonTee FrozenLemonTee merged commit 109fdef into main Mar 26, 2026
3 checks passed
@FrozenLemonTee FrozenLemonTee deleted the feat-explicit-conversion branch March 26, 2026 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants